package ld.oauth.blog.service.article;

import com.baomidou.mybatisplus.extension.service.IService;
import ld.oauth.blog.model.bo.ArticleBo;
import ld.oauth.blog.model.bo.CommentBo;
import ld.oauth.blog.model.po.article.Article;
import ld.oauth.blog.model.qo.ArticleQo;
import ld.oauth.blog.model.vo.ArticleDetail;
import ld.oauth.blog.model.vo.ArticleVo;
import ld.oauth.blog.model.vo.CommentVo;
import ld.oauth.blog.utils.PageResult;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ld
 * @since 2022-09-24
 */
public interface ArticleService extends IService<Article> {

    /**
     * 新增或修改文章
     * @param articleBo
     * @return
     */
    Integer saveOrUpdate(ArticleBo articleBo);


    /**
     * 分页条件查询文章列表
     * @param articleQo
     * @return
     */
    PageResult<ArticleVo> pageQuery(ArticleQo articleQo);

    /**
     * 根据文章id查询文章详情
     * @param id
     * @return
     */
    ArticleDetail articleDetailById(Integer id);

    /**
     * 更新文章浏览数
     * @param id
     */
    void updateArticleViewCountById(Integer id);

    /**
     * 更新文章点赞数
     * @param articleId
     * @param count
     */
    void updateArticleThumbById(Integer articleId, Integer count);

    /**
     * 根据文章id获取评论list
     * @param articleId
     */
    List<CommentVo> commentListByArticleId(Integer articleId);

    /**
     * 新增文章评论
     * @param commentBo
     * @return
     */
    Boolean insertComment(CommentBo commentBo);

    /**
     * 根据标签id分页查询文章列表
     * @param articleQo
     * @return
     */
    PageResult<ArticleDetail> queryArticleDetailByLabelId(ArticleQo articleQo);
}
